home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / amiga utilities / communication / internet / amitcp3.0b / src.lha / src / amitcp / api / apicalls_gnuc.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-09-08  |  17.4 KB  |  580 lines

  1. #ifndef API_APICALLS_GNUC_H
  2. #define API_APICALLS_GNUC_H
  3.  
  4. #ifndef API_APICALLS_H
  5. #error include <api/apicalls.h> instead of __FILE__.
  6. #endif
  7.  
  8. #define BASE_EXT_DECL
  9. #define BASE_PAR_DECL  struct SocketBase * SocketBase,
  10. #define BASE_PAR_DECL0 struct SocketBase * SocketBase
  11. #define BASE_NAME SocketBase  
  12.  
  13. static __inline LONG 
  14. CloseSocket (BASE_PAR_DECL LONG d)
  15. {
  16.   BASE_EXT_DECL
  17.   register LONG  _res  __asm("d0");
  18.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  19.   register LONG d0 __asm("d0") = d;
  20.   __asm __volatile ("jsr a6@(-0x78)"
  21.   : "=r" (_res)
  22.   : "r" (a6), "r" (d0)
  23.   : "a0","a1","d0","d1", "memory");
  24.   return _res;
  25. }
  26. static __inline LONG 
  27. Errno (BASE_PAR_DECL0)
  28. {
  29.   BASE_EXT_DECL
  30.   register LONG  _res  __asm("d0");
  31.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  32.   __asm __volatile ("jsr a6@(-0xa2)"
  33.   : "=r" (_res)
  34.   : "r" (a6)
  35.   : "a0","a1","d0","d1", "memory");
  36.   return _res;
  37. }
  38. static __inline ULONG 
  39. Inet_LnaOf (BASE_PAR_DECL LONG in)
  40. {
  41.   BASE_EXT_DECL
  42.   register ULONG  _res  __asm("d0");
  43.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  44.   register LONG a0 __asm("a0") = in;
  45.   __asm __volatile ("jsr a6@(-0xba)"
  46.   : "=r" (_res)
  47.   : "r" (a6), "r" (a0)
  48.   : "a0","a1","d0","d1", "memory");
  49.   return _res;
  50. }
  51. static __inline ULONG 
  52. Inet_MakeAddr (BASE_PAR_DECL int net,int  host)
  53. {
  54.   BASE_EXT_DECL
  55.   register ULONG  _res  __asm("d0");
  56.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  57.   register int d0 __asm("d0") = net;
  58.   register int d1 __asm("d1") =  host;
  59.   __asm __volatile ("jsr a6@(-0xc6)"
  60.   : "=r" (_res)
  61.   : "r" (a6), "r" (d0), "r" (d1)
  62.   : "a0","a1","d0","d1", "memory");
  63.   return _res;
  64. }
  65. static __inline ULONG 
  66. Inet_NetOf (BASE_PAR_DECL LONG in)
  67. {
  68.   BASE_EXT_DECL
  69.   register ULONG  _res  __asm("d0");
  70.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  71.   register LONG a0 __asm("a0") = in;
  72.   __asm __volatile ("jsr a6@(-0xc0)"
  73.   : "=r" (_res)
  74.   : "r" (a6), "r" (a0)
  75.   : "a0","a1","d0","d1", "memory");
  76.   return _res;
  77. }
  78. static __inline char *
  79. Inet_NtoA (BASE_PAR_DECL ULONG in)
  80. {
  81.   BASE_EXT_DECL
  82.   register char * _res  __asm("d0");
  83.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  84.   register ULONG a0 __asm("a0") = in;
  85.   __asm __volatile ("jsr a6@(-0xae)"
  86.   : "=r" (_res)
  87.   : "r" (a6), "r" (a0)
  88.   : "a0","a1","d0","d1", "memory");
  89.   return _res;
  90. }
  91. static __inline LONG 
  92. ObtainSocket (BASE_PAR_DECL LONG id,LONG  domain,LONG  type,LONG  protocol)
  93. {
  94.   BASE_EXT_DECL
  95.   register LONG  _res  __asm("d0");
  96.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  97.   register LONG d0 __asm("d0") = id;
  98.   register LONG d1 __asm("d1") =  domain;
  99.   register LONG d2 __asm("d2") =  type;
  100.   register LONG d3 __asm("d3") =  protocol;
  101.   __asm __volatile ("jsr a6@(-0x90)"
  102.   : "=r" (_res)
  103.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (d3)
  104.   : "a0","a1","d0","d1","d2","d3", "memory");
  105.   return _res;
  106. }
  107. static __inline LONG 
  108. ReleaseCopyOfSocket (BASE_PAR_DECL LONG id,LONG  fd)
  109. {
  110.   BASE_EXT_DECL
  111.   register LONG  _res  __asm("d0");
  112.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  113.   register LONG d0 __asm("d0") = id;
  114.   register LONG d1 __asm("d1") =  fd;
  115.   __asm __volatile ("jsr a6@(-0x9c)"
  116.   : "=r" (_res)
  117.   : "r" (a6), "r" (d0), "r" (d1)
  118.   : "a0","a1","d0","d1", "memory");
  119.   return _res;
  120. }
  121. static __inline LONG 
  122. ReleaseSocket (BASE_PAR_DECL LONG id,LONG  fd)
  123. {
  124.   BASE_EXT_DECL
  125.   register LONG  _res  __asm("d0");
  126.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  127.   register LONG d0 __asm("d0") = id;
  128.   register LONG d1 __asm("d1") =  fd;
  129.   __asm __volatile ("jsr a6@(-0x96)"
  130.   : "=r" (_res)
  131.   : "r" (a6), "r" (d0), "r" (d1)
  132.   : "a0","a1","d0","d1", "memory");
  133.   return _res;
  134. }
  135. static __inline LONG 
  136. SetDTableSize (BASE_PAR_DECL LONG size)
  137. {
  138.   BASE_EXT_DECL
  139.   register LONG  _res  __asm("d0");
  140.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  141.   register LONG d0 __asm("d0") = size;
  142.   __asm __volatile ("jsr a6@(-0x8a)"
  143.   : "=r" (_res)
  144.   : "r" (a6), "r" (d0)
  145.   : "a0","a1","d0","d1", "memory");
  146.   return _res;
  147. }
  148. static __inline void 
  149. SetErrnoPtr (BASE_PAR_DECL void *errno_p,LONG  size)
  150. {
  151.   BASE_EXT_DECL
  152.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  153.   register void *a0 __asm("a0") = errno_p;
  154.   register LONG d0 __asm("d0") =  size;
  155.   __asm __volatile ("jsr a6@(-0xa8)"
  156.   : /* no output */
  157.   : "r" (a6), "r" (a0), "r" (d0)
  158.   : "a0","a1","d0","d1", "memory");
  159. }
  160. static __inline void 
  161. SetSocketSignals (BASE_PAR_DECL ULONG SIGINTR,ULONG  SIGIO,ULONG  SIGURG)
  162. {
  163.   BASE_EXT_DECL
  164.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  165.   register ULONG d0 __asm("d0") = SIGINTR;
  166.   register ULONG d1 __asm("d1") =  SIGIO;
  167.   register ULONG d2 __asm("d2") =  SIGURG;
  168.   __asm __volatile ("jsr a6@(-0x84)"
  169.   : /* no output */
  170.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2)
  171.   : "a0","a1","d0","d1","d2", "memory");
  172. }
  173. static __inline void 
  174. Syslog (BASE_PAR_DECL ULONG level,const STRPTR  format,va_list  ap)
  175. {
  176.   BASE_EXT_DECL
  177.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  178.   register ULONG d0 __asm("d0") = level;
  179.   register const STRPTR a0 __asm("a0") =  format;
  180.   register va_list a1 __asm("a1") =  ap;
  181.   __asm __volatile ("jsr a6@(-0x102)"
  182.   : /* no output */
  183.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  184.   : "a0","a1","d0","d1", "memory");
  185. }
  186. static __inline LONG 
  187. WaitSelect (BASE_PAR_DECL LONG nfds,fd_set * readfds,fd_set * writefds,fd_set * execptfds,struct timeval * timeout,ULONG * maskp)
  188. {
  189.   BASE_EXT_DECL
  190.   register LONG  _res  __asm("d0");
  191.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  192.   register LONG d0 __asm("d0") = nfds;
  193.   register fd_set *a0 __asm("a0") =  readfds;
  194.   register fd_set *a1 __asm("a1") =  writefds;
  195.   register fd_set *a2 __asm("a2") =  execptfds;
  196.   register struct timeval *a3 __asm("a3") =  timeout;
  197.   register ULONG *d1 __asm("d1") =  maskp;
  198.   __asm __volatile ("jsr a6@(-0x7e)"
  199.   : "=r" (_res)
  200.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1), "r" (a2), "r" (a3), "r" (d1)
  201.   : "a0","a1","a2","a3","d0","d1", "memory");
  202.   return _res;
  203. }
  204. static __inline LONG 
  205. accept (BASE_PAR_DECL LONG s,struct sockaddr * addr,LONG * addrlen)
  206. {
  207.   BASE_EXT_DECL
  208.   register LONG  _res  __asm("d0");
  209.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  210.   register LONG d0 __asm("d0") = s;
  211.   register struct sockaddr *a0 __asm("a0") =  addr;
  212.   register LONG *a1 __asm("a1") =  addrlen;
  213.   __asm __volatile ("jsr a6@(-0x30)"
  214.   : "=r" (_res)
  215.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  216.   : "a0","a1","d0","d1", "memory");
  217.   return _res;
  218. }
  219. static __inline LONG 
  220. bind (BASE_PAR_DECL LONG s,struct sockaddr * name,LONG  namelen)
  221. {
  222.   BASE_EXT_DECL
  223.   register LONG  _res  __asm("d0");
  224.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  225.   register LONG d0 __asm("d0") = s;
  226.   register struct sockaddr *a0 __asm("a0") =  name;
  227.   register LONG d1 __asm("d1") =  namelen;
  228.   __asm __volatile ("jsr a6@(-0x24)"
  229.   : "=r" (_res)
  230.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  231.   : "a0","a1","d0","d1", "memory");
  232.   return _res;
  233. }
  234. static __inline LONG 
  235. connect (BASE_PAR_DECL LONG s,struct sockaddr * name,LONG  namelen)
  236. {
  237.   BASE_EXT_DECL
  238.   register LONG  _res  __asm("d0");
  239.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  240.   register LONG d0 __asm("d0") = s;
  241.   register struct sockaddr *a0 __asm("a0") =  name;
  242.   register LONG d1 __asm("d1") =  namelen;
  243.   __asm __volatile ("jsr a6@(-0x36)"
  244.   : "=r" (_res)
  245.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  246.   : "a0","a1","d0","d1", "memory");
  247.   return _res;
  248. }
  249. static __inline struct hostent *
  250. gethostbyaddr (BASE_PAR_DECL const char *addr,LONG  len,LONG  type)
  251. {
  252.   BASE_EXT_DECL
  253.   register struct hostent * _res  __asm("d0");
  254.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  255.   register const char *a0 __asm("a0") = addr;
  256.   register LONG d0 __asm("d0") =  len;
  257.   register LONG d1 __asm("d1") =  type;
  258.   __asm __volatile ("jsr a6@(-0xd8)"
  259.   : "=r" (_res)
  260.   : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  261.   : "a0","a1","d0","d1", "memory");
  262.   return _res;
  263. }
  264. static __inline struct hostent *
  265. gethostbyname (BASE_PAR_DECL const char *name)
  266. {
  267.   BASE_EXT_DECL
  268.   register struct hostent * _res  __asm("d0");
  269.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  270.   register const char *a0 __asm("a0") = name;
  271.   __asm __volatile ("jsr a6@(-0xd2)"
  272.   : "=r" (_res)
  273.   : "r" (a6), "r" (a0)
  274.   : "a0","a1","d0","d1", "memory");
  275.   return _res;
  276. }
  277. static __inline struct netent *
  278. getnetbyaddr (BASE_PAR_DECL LONG net,LONG  type)
  279. {
  280.   BASE_EXT_DECL
  281.   register struct netent * _res  __asm("d0");
  282.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  283.   register LONG d0 __asm("d0") = net;
  284.   register LONG d1 __asm("d1") =  type;
  285.   __asm __volatile ("jsr a6@(-0xe4)"
  286.   : "=r" (_res)
  287.   : "r" (a6), "r" (d0), "r" (d1)
  288.   : "a0","a1","d0","d1", "memory");
  289.   return _res;
  290. }
  291. static __inline struct netent *
  292. getnetbyname (BASE_PAR_DECL const char *name)
  293. {
  294.   BASE_EXT_DECL
  295.   register struct netent * _res  __asm("d0");
  296.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  297.   register const char *a0 __asm("a0") = name;
  298.   __asm __volatile ("jsr a6@(-0xde)"
  299.   : "=r" (_res)
  300.   : "r" (a6), "r" (a0)
  301.   : "a0","a1","d0","d1", "memory");
  302.   return _res;
  303. }
  304. static __inline LONG 
  305. getpeername (BASE_PAR_DECL LONG s,struct sockaddr * hostname,LONG * namelen)
  306. {
  307.   BASE_EXT_DECL
  308.   register LONG  _res  __asm("d0");
  309.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  310.   register LONG d0 __asm("d0") = s;
  311.   register struct sockaddr *a0 __asm("a0") =  hostname;
  312.   register LONG *a1 __asm("a1") =  namelen;
  313.   __asm __volatile ("jsr a6@(-0x6c)"
  314.   : "=r" (_res)
  315.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  316.   : "a0","a1","d0","d1", "memory");
  317.   return _res;
  318. }
  319. static __inline struct protoent *
  320. getprotobyname (BASE_PAR_DECL const char *name)
  321. {
  322.   BASE_EXT_DECL
  323.   register struct protoent * _res  __asm("d0");
  324.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  325.   register const char *a0 __asm("a0") = name;
  326.   __asm __volatile ("jsr a6@(-0xf6)"
  327.   : "=r" (_res)
  328.   : "r" (a6), "r" (a0)
  329.   : "a0","a1","d0","d1", "memory");
  330.   return _res;
  331. }
  332. static __inline struct protoent *
  333. getprotobynumber (BASE_PAR_DECL LONG proto)
  334. {
  335.   BASE_EXT_DECL
  336.   register struct protoent * _res  __asm("d0");
  337.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  338.   register LONG d0 __asm("d0") = proto;
  339.   __asm __volatile ("jsr a6@(-0xfc)"
  340.   : "=r" (_res)
  341.   : "r" (a6), "r" (d0)
  342.   : "a0","a1","d0","d1", "memory");
  343.   return _res;
  344. }
  345. static __inline struct servent *
  346. getservbyname (BASE_PAR_DECL const char *name,const char * proto)
  347. {
  348.   BASE_EXT_DECL
  349.   register struct servent * _res  __asm("d0");
  350.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  351.   register const char *a0 __asm("a0") = name;
  352.   register const char *a1 __asm("a1") =  proto;
  353.   __asm __volatile ("jsr a6@(-0xea)"
  354.   : "=r" (_res)
  355.   : "r" (a6), "r" (a0), "r" (a1)
  356.   : "a0","a1","d0","d1", "memory");
  357.   return _res;
  358. }
  359. static __inline struct servent *
  360. getservbyport (BASE_PAR_DECL LONG port,const char * proto)
  361. {
  362.   BASE_EXT_DECL
  363.   register struct servent * _res  __asm("d0");
  364.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  365.   register LONG d0 __asm("d0") = port;
  366.   register const char *a0 __asm("a0") =  proto;
  367.   __asm __volatile ("jsr a6@(-0xf0)"
  368.   : "=r" (_res)
  369.   : "r" (a6), "r" (d0), "r" (a0)
  370.   : "a0","a1","d0","d1", "memory");
  371.   return _res;
  372. }
  373. static __inline LONG 
  374. getsockname (BASE_PAR_DECL LONG s,struct sockaddr * hostname,LONG * namelen)
  375. {
  376.   BASE_EXT_DECL
  377.   register LONG  _res  __asm("d0");
  378.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  379.   register LONG d0 __asm("d0") = s;
  380.   register struct sockaddr *a0 __asm("a0") =  hostname;
  381.   register LONG *a1 __asm("a1") =  namelen;
  382.   __asm __volatile ("jsr a6@(-0x66)"
  383.   : "=r" (_res)
  384.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  385.   : "a0","a1","d0","d1", "memory");
  386.   return _res;
  387. }
  388. static __inline LONG 
  389. getsockopt (BASE_PAR_DECL LONG s,LONG  level,LONG  optname,char * optval,LONG * optlen)
  390. {
  391.   BASE_EXT_DECL
  392.   register LONG  _res  __asm("d0");
  393.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  394.   register LONG d0 __asm("d0") = s;
  395.   register LONG d1 __asm("d1") =  level;
  396.   register LONG d2 __asm("d2") =  optname;
  397.   register char *a0 __asm("a0") =  optval;
  398.   register LONG *a1 __asm("a1") =  optlen;
  399.   __asm __volatile ("jsr a6@(-0x60)"
  400.   : "=r" (_res)
  401.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (a0), "r" (a1)
  402.   : "a0","a1","d0","d1","d2", "memory");
  403.   return _res;
  404. }
  405. static __inline ULONG 
  406. inet_addr (BASE_PAR_DECL const char * cp)
  407. {
  408.   BASE_EXT_DECL
  409.   register ULONG  _res  __asm("d0");
  410.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  411.   register const char * a0 __asm("a0") = cp;
  412.   __asm __volatile ("jsr a6@(-0xb4)"
  413.   : "=r" (_res)
  414.   : "r" (a6), "r" (a0)
  415.   : "a0","a1","d0","d1", "memory");
  416.   return _res;
  417. }
  418. static __inline ULONG 
  419. inet_network (BASE_PAR_DECL const char * cp)
  420. {
  421.   BASE_EXT_DECL
  422.   register ULONG  _res  __asm("d0");
  423.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  424.   register const char * a0 __asm("a0") = cp;
  425.   __asm __volatile ("jsr a6@(-0xcc)"
  426.   : "=r" (_res)
  427.   : "r" (a6), "r" (a0)
  428.   : "a0","a1","d0","d1", "memory");
  429.   return _res;
  430. }
  431. static __inline LONG 
  432. ioctl (BASE_PAR_DECL LONG d,ULONG  request,char * argp)
  433. {
  434.   BASE_EXT_DECL
  435.   register LONG  _res  __asm("d0");
  436.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  437.   register LONG d0 __asm("d0") = d;
  438.   register ULONG d1 __asm("d1") =  request;
  439.   register char *a0 __asm("a0") =  argp;
  440.   __asm __volatile ("jsr a6@(-0x72)"
  441.   : "=r" (_res)
  442.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  443.   : "a0","a1","d0","d1", "memory");
  444.   return _res;
  445. }
  446. static __inline LONG 
  447. listen (BASE_PAR_DECL LONG s,LONG  backlog)
  448. {
  449.   BASE_EXT_DECL
  450.   register LONG  _res  __asm("d0");
  451.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  452.   register LONG d0 __asm("d0") = s;
  453.   register LONG d1 __asm("d1") =  backlog;
  454.   __asm __volatile ("jsr a6@(-0x2a)"
  455.   : "=r" (_res)
  456.   : "r" (a6), "r" (d0), "r" (d1)
  457.   : "a0","a1","d0","d1", "memory");
  458.   return _res;
  459. }
  460. static __inline LONG 
  461. recv (BASE_PAR_DECL LONG s,char * buf,LONG  len,LONG  flags)
  462. {
  463.   BASE_EXT_DECL
  464.   register LONG  _res  __asm("d0");
  465.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  466.   register LONG d0 __asm("d0") = s;
  467.   register char *a0 __asm("a0") =  buf;
  468.   register LONG d1 __asm("d1") =  len;
  469.   register LONG d2 __asm("d2") =  flags;
  470.   __asm __volatile ("jsr a6@(-0x4e)"
  471.   : "=r" (_res)
  472.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2)
  473.   : "a0","a1","d0","d1","d2", "memory");
  474.   return _res;
  475. }
  476. static __inline LONG 
  477. recvfrom (BASE_PAR_DECL LONG s,char * buf,LONG  len,LONG  flags,struct sockaddr * from,LONG * fromlen)
  478. {
  479.   BASE_EXT_DECL
  480.   register LONG  _res  __asm("d0");
  481.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  482.   register LONG d0 __asm("d0") = s;
  483.   register char *a0 __asm("a0") =  buf;
  484.   register LONG d1 __asm("d1") =  len;
  485.   register LONG d2 __asm("d2") =  flags;
  486.   register struct sockaddr *a1 __asm("a1") =  from;
  487.   register LONG *a2 __asm("a2") =  fromlen;
  488.   __asm __volatile ("jsr a6@(-0x48)"
  489.   : "=r" (_res)
  490.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2), "r" (a1), "r" (a2)
  491.   : "a0","a1","a2","d0","d1","d2", "memory");
  492.   return _res;
  493. }
  494. static __inline LONG 
  495. send (BASE_PAR_DECL LONG s,char * msg,LONG  len,LONG  flags)
  496. {
  497.   BASE_EXT_DECL
  498.   register LONG  _res  __asm("d0");
  499.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  500.   register LONG d0 __asm("d0") = s;
  501.   register char *a0 __asm("a0") =  msg;
  502.   register LONG d1 __asm("d1") =  len;
  503.   register LONG d2 __asm("d2") =  flags;
  504.   __asm __volatile ("jsr a6@(-0x42)"
  505.   : "=r" (_res)
  506.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2)
  507.   : "a0","a1","d0","d1","d2", "memory");
  508.   return _res;
  509. }
  510. static __inline LONG 
  511. sendto (BASE_PAR_DECL LONG s,char * msg,LONG  len,LONG  flags,struct sockaddr * to,LONG  tolen)
  512. {
  513.   BASE_EXT_DECL
  514.   register LONG  _res  __asm("d0");
  515.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  516.   register LONG d0 __asm("d0") = s;
  517.   register char *a0 __asm("a0") =  msg;
  518.   register LONG d1 __asm("d1") =  len;
  519.   register LONG d2 __asm("d2") =  flags;
  520.   register struct sockaddr *a1 __asm("a1") =  to;
  521.   register LONG d3 __asm("d3") =  tolen;
  522.   __asm __volatile ("jsr a6@(-0x3c)"
  523.   : "=r" (_res)
  524.   : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2), "r" (a1), "r" (d3)
  525.   : "a0","a1","d0","d1","d2","d3", "memory");
  526.   return _res;
  527. }
  528. static __inline LONG 
  529. setsockopt (BASE_PAR_DECL LONG s,LONG  level,LONG  optname,char * optval,LONG  optlen)
  530. {
  531.   BASE_EXT_DECL
  532.   register LONG  _res  __asm("d0");
  533.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  534.   register LONG d0 __asm("d0") = s;
  535.   register LONG d1 __asm("d1") =  level;
  536.   register LONG d2 __asm("d2") =  optname;
  537.   register char *a0 __asm("a0") =  optval;
  538.   register LONG d3 __asm("d3") =  optlen;
  539.   __asm __volatile ("jsr a6@(-0x5a)"
  540.   : "=r" (_res)
  541.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (a0), "r" (d3)
  542.   : "a0","a1","d0","d1","d2","d3", "memory");
  543.   return _res;
  544. }
  545. static __inline LONG 
  546. shutdown (BASE_PAR_DECL LONG s,LONG  how)
  547. {
  548.   BASE_EXT_DECL
  549.   register LONG  _res  __asm("d0");
  550.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  551.   register LONG d0 __asm("d0") = s;
  552.   register LONG d1 __asm("d1") =  how;
  553.   __asm __volatile ("jsr a6@(-0x54)"
  554.   : "=r" (_res)
  555.   : "r" (a6), "r" (d0), "r" (d1)
  556.   : "a0","a1","d0","d1", "memory");
  557.   return _res;
  558. }
  559. static __inline LONG 
  560. socket (BASE_PAR_DECL LONG domain,LONG  type,LONG  protocol)
  561. {
  562.   BASE_EXT_DECL
  563.   register LONG  _res  __asm("d0");
  564.   register struct SocketBase* a6 __asm("a6") = BASE_NAME;
  565.   register LONG d0 __asm("d0") = domain;
  566.   register LONG d1 __asm("d1") =  type;
  567.   register LONG d2 __asm("d2") =  protocol;
  568.   __asm __volatile ("jsr a6@(-0x1e)"
  569.   : "=r" (_res)
  570.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2)
  571.   : "a0","a1","d0","d1","d2", "memory");
  572.   return _res;
  573. }
  574. #undef BASE_EXT_DECL
  575. #undef BASE_PAR_DECL
  576. #undef BASE_PAR_DECL0
  577. #undef BASE_NAME
  578.  
  579. #endif /* API_APICALLS_GNUC_H */
  580.